Concept: Espaço de Trabalho
Um espaço de trabalho refere-se a uma área de armazenamento onde desenvolvedores podem implementar e testar o código de acordo com os padrões adotados pelo projeto, com um isolamento relativo aos outros desenvolvedores.
Relationships
Main Description

Para equipes pequenas, os espaços de trabalho compartilhados podem funcionar muito bem, mas é necessário coordenar as atividades entre membros da equipe para evitar conflitos.

A melhor abordagem é que cada desenvolvedor tenha uma área privativa para o desenvolvimento e teste de seus produtos do trabalho. Este espaço de trabalho deve ser isolado de modo que as mudanças conflitantes feitas pelos outros não interfiram com o progresso de seu trabalho. Entretanto, não deve ser tão isolado de forma que o trabalho do desenvolvedor fique indisponível para a equipe.

Adicionalmente, os espaços de trabalho isolados podem ser criados para cada fase de teste, tal como os testes de integração e testes de sistema. Esta abordagem de espaços de trabalho oferece diversos benefícios [WIB04]:

  • Os desenvolvedores podem implementar, testar, e depurar alterações no software sem serem afetados pelas alterações feitas pelos outros membros da equipe até que seu trabalho esteja pronto. Quando estiver pronto, o desenvolvedor pode atualizar seu ambiente isolado para testar as mudanças feitas pelos outros desenvolvedores.

  • Com espaços de trabalho separados para os testes de integração e de sistema, uma equipe poderia usar uma metodologia que assegurasse que as mudanças tivessem que passar pelos testes de integração antes que outros desenvolvedores as utilizassem, diminuindo desse modo o tempo gasto com a solução de problemas de integração. Por exemplo, se dois membros da equipe fizerem mudanças incompatíveis sem notarem, e ambas as mudanças estiverem imediatamente disponíveis para todos na equipe, todos os membros da equipe poderão perder tempo tentando consertar uma construção inconsistente. Inversamente, se ambas as mudanças tivessem que passar pelos testes de integração antes de serem distribuídas para os outros, o problema poderia ser detectado e reparado por uma pessoa com mínimo impacto para a equipe.

  • Pela definição de uma área de integração para coletar e agrupar as últimas alterações feitas, a equipe pode integrar com mais freqüência. Esta é uma das melhores práticas bem conhecida para reduzir o custo e o tempo totais para entregar projetos de software.

  • A área de testes de sistema, que é usada para a preparação de liberações, é isolada das mudanças contínuas feitas pelos desenvolvedores e contém somente as configurações que passaram pelos testes de integração. Isto permite que você controle o conteúdo da liberação ao mesmo tempo em que os desenvolvedores continuem com seu trabalho.